package com.glp.work.flow.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.glp.work.flow.pojo.WfTaskAssignNode;
import com.glp.work.flow.request.FlowTaskHistoryDTO;
import com.glp.work.flow.request.ToDoTasksRequest;
import com.glp.work.flow.request.WfOrderDetailQueryBySaDTO;
import com.glp.work.flow.request.WfOrderDetailQueryDTO;
import com.glp.work.flow.request.WfOrderQueryDTO;
import com.glp.work.flow.response.ToDoTasksResponse;
import com.glp.work.flow.response.WfOrderResponse;
import com.glp.work.flow.response.WfOrderResultDTO;

/**
 * 工作流查询服务
 *
 * @author jhuang1
 */
public interface WfProcessQueryService {

    /**
     * 查询代办
     *
     * @param wfOrderQueryDTO 查询条件
     * @return 查询结果
     */
    PageInfo<WfOrderResultDTO> queryToDoTasks(WfOrderQueryDTO wfOrderQueryDTO);

    /**
     * 查询已办
     *
     * @param wfOrderQueryDTO 查询条件
     * @return 查询结果
     */
    PageInfo<WfOrderResultDTO> queryDoneTasks(WfOrderQueryDTO wfOrderQueryDTO);


    /**
     * 查询工单详情
     *
     * @param wfOrderDetailQueryDTO
     * @return
     */
    WfOrderResponse queryOrderDetail(String userNo, WfOrderDetailQueryDTO wfOrderDetailQueryDTO);
    
    
    /**
     * 查询工单详情,不检验权限
     *
     * @param wfOrderDetailQueryDTO
     * @return
     */
    WfOrderResponse queryOrderDetailBySa(WfOrderDetailQueryBySaDTO wfOrderDetailQueryDTO);

    /**
     * 审批历史查询接口
     *
     * @param orderId
     * @param appId
     * @return
     */
    List<FlowTaskHistoryDTO> queryHistory(String orderId, String appId);

    /**
     * 查询待办任务数量
     *
     * @param req
     * @return
     */
    List<ToDoTasksResponse> totalToDoTasks(ToDoTasksRequest req);

    /**
     * @description : 查询待办任务数量
     * @params : [appId, userNo]
     * @returns : com.glp.work.flow.response.ToDoTasksResponse
     * @author : 郭永伟
     * @date : 2020/8/31
     */
    ToDoTasksResponse querytotalToDoTasksHeaders(String appId, String userNo);

    /**
     * @description : 获取历史user Task
     * @params : [processId]
     * @returns : java.util.List<com.glp.work.flow.request.FlowTaskHistoryDTO>
     * @author : 郭永伟
     * @date : 2020/9/16
     */
    List<FlowTaskHistoryDTO> queryHistoryUserTask(String processId,String taskId);

    /**
     * @description :我申请的工单待办数据
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/9/16
     */
    PageInfo<WfOrderResultDTO> myApplicationToDoOrder(WfOrderQueryDTO wfOrderQueryDTO);

    /**
     * @description :我申请的工单驳回数据
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/9/16
     */
    PageInfo<WfOrderResultDTO> myApplicationRejectOrder(WfOrderQueryDTO wfOrderQueryDTO);

    /**
     * @description :我申请的工单已办数据
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/9/16
     */
    PageInfo<WfOrderResultDTO> myApplicationDoneOrder(WfOrderQueryDTO wfOrderQueryDTO);

    /**
     * @description : 模拟工单待办列表
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/9/16
    */
    PageInfo<WfOrderResultDTO> simulationOrderToDoTasks(WfOrderQueryDTO wfOrderQueryDTO);

    /**
     * @description : 模拟工单已办列表
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/9/16
    */
    PageInfo<WfOrderResultDTO> simulationOrderDoneTasks(WfOrderQueryDTO wfOrderQueryDTO);
    
    /**
     * @description : 可驳回节点查询
     * @params : [taskId]
     * @returns : java.util.List<com.glp.work.flow.request.FlowTaskHistoryDTO>
     * @author : 郭永伟
     * @date : 2020/9/25
    */
    List<WfTaskAssignNode> queryRejectTask(String taskId);
    
    /**
     * @description : 待办工单2.0
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/9/25
    */
    PageInfo<WfOrderResultDTO> toDoTasks(WfOrderQueryDTO wfOrderQueryDTO);

    /**
     * @description : 我的所有待办任务
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/10/16
    */
    PageInfo<WfOrderResultDTO> myAllTask(WfOrderQueryDTO wfOrderQueryDTO);

    /**
     * @description : 我申请的所有工单
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2020/10/16
    */
    PageInfo<WfOrderResultDTO> myApplicationAllTask(WfOrderQueryDTO wfOrderQueryDTO);

    /***
     * @description : 查询所有工单
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2021/1/12
    */
    PageInfo<WfOrderResultDTO> queryAllOrder(WfOrderQueryDTO wfOrderQueryDTO);

    /***
     * @description : 查询所有工单中的驳回工单
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2021/1/14
    */
    PageInfo<WfOrderResultDTO> queryAllRejectTasks(WfOrderQueryDTO wfOrderQueryDTO);

    /***
     * @description : 查询所有工单中的待办工单
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2021/1/14
    */
    PageInfo<WfOrderResultDTO> queryAllToDoTasks(WfOrderQueryDTO wfOrderQueryDTO);

    /***
     * @description : 查询所有工单中的已办工单
     * @params : [wfOrderQueryDTO]
     * @returns : com.github.pagehelper.PageInfo<com.glp.work.flow.response.WfOrderResultDTO>
     * @author : 郭永伟
     * @date : 2021/1/14
    */
    PageInfo<WfOrderResultDTO> queryAllDoneTasks(WfOrderQueryDTO wfOrderQueryDTO);
}
